import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  OneToOne,
  JoinColumn,
  ManyToMany,
  ManyToOne,
  OneToMany,
  JoinTable,
} from "typeorm";
import { User } from "./User";

@Entity({
  name: "id_card",
})
export class IdCard {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    name: "cardName",
    length: 50,
    comment: "身份证号",
  })
  cardName: string;

  // 一对一关系 一个身份证对应一个用户
  // 在一对一关系中，@JoinColumn 应该在关系的拥有方声明，这里 IdCard 是关系的拥有方，
  // 所以在 IdCard 实体中声明 @JoinColumn，而在 User 实体中不需要声明。
  // 拥有方会在数据库表中添加外键列，这里外键列名为 user_id。
  // 级联操作：当删除或更新用户时，级联删除或更新该用户的身份证
  @JoinColumn({ name: "user_id" })
  @OneToOne(() => User, {
    onDelete: "CASCADE", // 级联删除，当用户删除时，级联删除该用户的身份证
    onUpdate: "CASCADE", // 级联更新，当用户更新时，级联更新该用户的身份证
    cascade: true, // 级联操作，当操作该实体时，级联操作关联的实体
  })
  user: User;
}
